package com.library.util;

import lombok.Data;

/**
 * 统一响应结果工具类
 * 标准化接口返回格式，便于前端统一处理
 * @param <T> 响应数据的类型
 */
@Data
public class ResultUtil<T> {
    // 响应状态码：0表示成功，1表示失败
    private int code;

    // 响应消息：成功或失败的描述信息
    private String message;

    // 响应数据：成功时返回的数据，失败时可能为null
    private T data;

    /**
     * 成功响应（无数据）
     * @param message 成功消息
     * @return 响应结果对象
     */
    public static ResultUtil<?> success(String message) {
        ResultUtil<?> result = new ResultUtil<>();
        result.setCode(0);
        result.setMessage(message);
        return result;
    }

    /**
     * 成功响应（带数据）
     * @param data 要返回的数据
     * @param <T> 数据类型
     * @return 响应结果对象
     */
    public static <T> ResultUtil<T> success(T data) {
        ResultUtil<T> result = new ResultUtil<>();
        result.setCode(0);
        result.setMessage("操作成功");
        result.setData(data);
        return result;
    }

    /**
     * 失败响应
     * @param message 失败原因
     * @return 响应结果对象
     */
    public static ResultUtil<?> error(String message) {
        ResultUtil<?> result = new ResultUtil<>();
        result.setCode(1);
        result.setMessage(message);
        return result;
    }
}
